var appPath = getAppPath();

$(function() {
	$("#queryTypeL").combobox({
		data : [{type_id : -1,type_name : '不限'},{type_id : 0,type_name : '普通用户'},
		        {type_id : 1,type_name : '一级管理员'},
		        {type_id : 2,type_name : '二级管理员'},
		        {type_id : 4,type_name : '三级管理员'},
		        {type_id : 8,type_name : '超级管理员'},
		        {type_id : 16,type_name : '设计人员'},
		        {type_id : 32,type_name : '模板操作员'},
		        {type_id : 64,type_name : '印刷对接员'},
		        {type_id : 128,type_name : '客服人员'},
		        {type_id : 256,type_name : '测试人员'},
		        {type_id : 512,type_name : '市场人员'},
		        {type_id : 1024,type_name : '环信人员'}
		],
		valueField : 'type_id',
		textField : 'type_name',
		value:-1
	});

	$("#queryTypeM").combobox({
		data : [ {
			type_id : 10,
			type_name : '后台管理人员'
		}],
		valueField : 'type_id',
		textField : 'type_name',
		value:10
	});
	initRoleGrid();
});

function initRoleGrid() {
	$('#roleGrid').datagrid({
		url : appPath + "/itbRole/pageGetRoleInfo.action",
		height : 'full',
		striped : true,
		fitColumns : true,
		queryParams : getQueryParam(),
		singleSelect : false,
		selectOnCheck : true,
		checkOnSelect : true,
		frozenColumns : [[{field : 'ck',checkbox : 'true',width : 10,align : 'center',sortable : false}]],
		columns : [[{field : 'role_id',title : '角色ID',width : 20,align : 'center',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				return value || '<span style="color:red">未知</span>';
				}
		}, {field : 'role_meta',title : '大分类',width : 40,align : 'center',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				var ret = '<span style="color:red">未知</span>';
				switch (Number(value || '0')) {
				case 0:
					ret = '<span style="color:blue">普通用户</span>';
					break;
				case 1:
					ret = '<span style="color:blue">一级管理员</span>';
					break;
				case 2:
					ret = '<span style="color:blue">二级管理员</span>';
					break;
				case 4:
					ret = '<span style="color:blue">三级管理员</span>';
					break;
				case 8:
					ret = '<span style="color:blue">超级管理员</span>';
					break;
				case 16:
					ret = '<span style="color:blue">设计人员</span>';
					break;
				case 32:
					ret = '<span style="color:blue">模板操作员</span>';
					break;
				case 64:
					ret = '<span style="color:blue">印刷对接员</span>';
					break;
				case 128:
					ret = '<span style="color:blue">客服人员</span>';
					break;
				case 256:
					ret = '<span style="color:blue">测试人员</span>';
					break;
				case 512:
					ret = '<span style="color:blue">市场人员</span>';
					break;
				case 1024:
					ret = '<span style="color:blue">环信人员</span>';
					break;
				}
				return ret;
			}}, {field : 'role_type',title : '分类',width : 20,align : 'center',sortable : false,
				formatter : function(value, rowData, rowIndex) {
				return value || '<span style="color:red">未知</span>';
				}
			}, {field : 'name',title : '角色名称',width : 40,align : 'center',sortable : false,
				formatter : function(value, rowData, rowIndex) {
				return value || '<span style="color:red">未知</span>';
				}
			}, {field : 'desc',title : '描述详情',width : 90,align : 'left',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				return value || '<span style="color:red>暂无描述</span>"';
				}
			},
			{field : 'edit',title : '编辑',width : 40,align : 'center',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				return '<a href="javascript:void(0)" onclick="showDetail('+rowData.role_id+')">修改</a>';
				}
			}, 
			{field : 'power',title : '角色授权',width : 40,align : 'center',sortable : false,
				formatter : function(value, rowData, rowIndex) {
					return '<a href="javascript:void(0)" onclick="empower('+rowData.role_id+')">授权</a>';
				}
			}, 
			{field : 'create_time',title : '创建时间',width : 70,align : 'center',sortable : false}, 
			{field : 'update_time',title : '更新时间',width : 70,align : 'center',sortable : false}]],
		hideColumn : [ 'user_type' ],
		pagination : true,
		rownumbers : true,
		toolbar : [ {
			text : '新建角色信息',
			iconCls : 'icon-add',
			handler : function() {
				addRoleInfo();
			}
		}, {
			text : '删除角色信息',
			iconCls : 'icon-cancel',
			handler : function() {
				delRoleInfo();
			}
		}]
	});
}


function doQueryFun(){ // 获取 授权功能列表信息
	$("#powerGrid").datagrid('unselectAll');
	$("#powerGrid").datagrid('load', getParam());
}

function getParam(){// 获取参数
	var obj = {};
	
	var findRole = $("#roleId").val();// 角色
	var findFtype = $("#funType").combobox('getValue');// 功能分类
 
	if (findRole) obj.roleId = findRole;
	if (findFtype) obj.findFtype = findFtype;
	return obj;
}

/** 用户角色授权*/
function empower(id){
	$("#roleId").val(id);
	$("#powerGrid").html('');
	$("#ppBtn").show('slow');
	$('#powerDlg').window({
		title:'角色功能授权',
		iconCls:'icon-edit',
		left:'300px',
		modal: true,
		shadow: true,
		collapsible:false,
		minimizable:false,
		maximizable:false
	});
	$("#funType").combobox({
		data : [ {type_id : 10,type_name : '后台管理员'},{type_id : 20,type_name : '设计师'},{type_id : 30,type_name : 'ALI推广'}],
		valueField : 'type_id',
		textField : 'type_name',
		value:10
	});
	
	$('#powerDlg').window('move',{top:0,left:200});
	$('#powerDlg').window('open',{left:"300px", top:"0px"});
	initBackFun();// 初始化列表
}

function initBackFun(){
	$('#powerGrid').datagrid({
		url : appPath+"/itbRole/getFatherFuncInfo.action",
		height : '450',
		striped : true,
		queryParams : getParam(),
		fitColumns : true,
		singleSelect : false,
		selectOnCheck : true,
		checkOnSelect : true,
		AllowPaging :false,
		showPager:false,
		columns : [[
		 {field : 'fid',title : '父ID',width : 40,align : 'center',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				return value || '<span style="color:red">N/A</span>';
				}
		},
		{field : 'fname',title : '父功能名称',width : 80,align : 'center',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				if(value) {
					if(rowData.sname) {
						return '<span style="color:darkgrey">'+value+'</span>';;
					} else {
						return '<span style="color:red">'+value+'</span>';
					}
				}
				return '<span style="color:red">未知</span>';
			}
		}, 
		{field : 'sfid',title : '功能ID',width : 30,align : 'left',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				return value || '';
			}
		},
		{field : 'sname',title : '子功能名称',width : 90,align : 'left',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				if(value) {
					return '<span style="color:blue">'+value+'</span>';
				}
				return '';
			}
		},
		{field : 'sauth',title : '功能权限',width : 60,align : 'left',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				var chk = (Number(value||'0')>0)?"checked":"";
				var id=rowData.fid;
				var sfid=rowData.sfid;
				var ret;
				if(rowData.sfid>0&&rowData.fauth==null){//子类的权限1
					ret='<div><input class="sau'+id+'" disabled="disabled" type="checkbox"'+chk+' name="fau1"'+
					'value="'+sfid+'"></input></div>';
				}else if(rowData.sfid>0&&rowData.fauth==1){
					ret='<div class="sau"><input type="checkbox"'+chk+' name="fau1"'+
					'value="'+sfid+'" class="sau'+id+'"></input></div>';
				}else{//父类的权限1
					ret='<input type="checkbox"'+chk+' href="javascript:void(0)" name="fau1"'+
					'value="'+id+'" id="fsau'+id+'" onclick=dis('+id+')></input>';
				}
				return ret;
			}
		},
		{field : 'sauth2',title : '数据权限',width : 60,align : 'left',sortable : false,
			formatter : function(value, rowData, rowIndex) {
				var chk=(Number(value||'0')>0)?"checked":"";
				var id=rowData.fid;
				var ret;
				if(rowData.sfid>0&&rowData.fauth==null){//子类的权限2
					ret='<div><input class="sau'+id+'" disabled="disabled" type="checkbox"'+chk+' name="fau2" '+
					'value="'+rowData.sfid+'"></input></div>';
				}else if(rowData.sfid>0&&rowData.fauth==1){
					ret='<div><input class="sau'+id+'" type="checkbox"'+chk+' name="fau2"'+
					'value="'+rowData.sfid+'"></input></div>';
				}else{//父类的权限2
					ret='<input type="checkbox"'+chk+' name="fau2" value="'+rowData.fid+'"></input>';
				}
				return ret;
			}
		}
		]],
		onClickRow: function (rowIndex, rowData) {
			$(this).datagrid('unselectRow', rowIndex);
		},
		hideColumn : [ 'user_type' ],
		pagination : false,
		rownumbers : false
	});
}

/**测试 设置/取消disable
 */
function dis(id) {
	if($("#fsau"+id).is(':checked')) {
		$(".sau"+id).removeAttr("disabled")
	}else{
		$(".sau"+id).attr("disabled",true);
		$(".sau"+id).removeAttr('checked')
	}
}


/**确认授权
 */
function updPp() {
	var pps = $("input[name='fau1']:checked").map(function(){
        	return $(this).val();
        }).get().join(',');
	
	var pps2 = $("input[name='fau2']:checked").map(function(){
		return $(this).val();
	}).get().join(',');
	
	
	var fType = $("#funType").combobox('getValue');
//	alert(pps+"######"+pps2);
	
	var info = '是否确定授权?';
	if (!pps && !pps2){
		info = '<font color="red">授权选择为空 是否继续授权?</font>';
	}
	
	$.messager.confirm('确定',info,function(r){
			if(r){
				$.loading(true);
				var id = $("#roleId").val();
				var url = appPath+"/itbRole/sureEmpower.action";
				var data = {
					'roleId': id,
					'checkId': pps,
					'authority2': pps2,
					'fType' : fType
				}
				$.post(url,data,function(ret){
					$.loading(false);
					if(ret == 'ok'){
						$.messager.alert('提示信息','授权成功！','info');
					} else if (ret == 'nc'){
						$.messager.alert('提示信息','页面功能为空 不用授权','warning');
					} else{
						$.messager.alert('提示信息','授权失败！','error');
					}
				});
			}
	});
}

//取消授权
function cancelPp(){
	$("#powerDlg").window('close');
}


//定义索引 查找元素位置
Array.prototype.indexOf = function(val) {
	for (var i = 0; i < this.length; i++) {
	if (this[i] == val) return i;
	}
	return -1;
};

//删除数组元素
Array.prototype.remove = function(val) {
		var index = this.indexOf(val);
		if (index > -1) {
		this.splice(index, 1);
		}
};

/**
 * 新建角色信息
 */
function addRoleInfo() {
	$("#editTable").show();
	$('#editForm').form('clear');
	$("#editRoleId").val('');
	$("#editTypeL").combobox('enable');
	$("#editTypeM").combobox('enable');
	$("#editTypeL").combobox({
				data : [{type_id : -1,type_name : '不限'},{type_id : 0,type_name : '普通用户'},
					   {type_id : 1,type_name : '一级管理员'},
					   {type_id : 2,type_name : '二级管理员'},
					   {type_id : 4,type_name : '三级管理员'},
					   {type_id : 8,type_name : '超级管理员'},
					   {type_id : 16,type_name : '设计人员'},
					   {type_id : 32,type_name : '模板操作员'},
					   {type_id : 64,type_name : '印刷对接员'},
					   {type_id : 128,type_name : '客服人员'},
					   {type_id : 256,type_name : '测试人员'},
					   {type_id : 512,type_name : '市场人员'},
					   {type_id : 1024,type_name : '环信人员'}],
				valueField : 'type_id',
				textField : 'type_name',
				value:-1
			});
	$("#editTypeM").combobox({
		data : [ {type_id : 10,type_name : '后台管理员'}],
		valueField : 'type_id',
		textField : 'type_name',
		value:10
	});
	$("#editBtn").show();
	$('#editDlg').window({
		title : '新建角色信息',
		iconCls : 'icon-edit',
		modal : true,
		shadow : true,
		collapsible : false,
		minimizable : false,
		maximizable : false
	});

	$('#editDlg').window('move', {
		top : 20,
		left : 20
	});
	$('#editDlg').window('open');
}

// 确认提交编辑
function doEdit() {
	var rId = $("#editRoleId").val();
	var rMeta = $("#editTypeL").combobox('getValue');
	var rType = $("#editTypeM").combobox('getValue');
	var desc = $("#editDesc").val();
	var name = $("#editName").val();
	if (rMeta && Number(rMeta || '0') >= 0) {
		if (desc && desc.length > 0&&name.length>0) {
				var	 url=appPath + "/itbRole/addRoleInfo.action";// 新建
			if (Number(rId || '0') > 0) {
				var	 url = appPath + "/itbRole/updRoleInfo.action";// 修改
			}
			var sendData = {
				"roleDto.role_id" : rId || "",
				"roleDto.role_meta" : rMeta || "",
				"roleDto.role_type" : rType || "",
				"roleDto.desc" : desc || "",
				"roleDto.name" : name || ""
			};
			$.post(url, sendData, function(data) {
				if (data == "ok") {
					$.messager.alert('提示信息', '提交成功', 'info');
					$('#editDlg').window('close');
					doQuery();
				} else if (data == "exit") {
					$.messager.alert('提示信息', '分类已存在', 'info');
				} else {
					$.message.alert("提示信息", "提交失败", 'info');
				}
			});
		} else {
			$.messager.alert('提示信息', '请填写角色描述和者角色名称', 'info');
		}
	}else{
		$.messager.alert('提示信息', '请填写角色分类!', 'info');
	}
}

function cancelEdit() {
	$('#editDlg').window('close');
}

/**
 * 查询单个角色信息
 * @param id
 */
function showDetail(id) {
	$("#editTable").show();
	$('#editForm').form('clear');
	$("#editRoleId").val(id);
	$("#editTypeL").combobox('enable');
	$("#editTypeM").combobox('enable');
	// 加载数据
	var url = appPath + "/itbRole/getOneRoleInfo.action?id="+id;
	$.get(url,function(ret) {
		if (ret && ret.length > 0) {
				var info = ret[0];
				$("#editDesc").val(info.desc || '');
				$("#editName").val(info.name||'');
				$("#editTypeL").combobox({
					data : [{type_id : 0,type_name : '普通用户'},
						    {type_id : 1,type_name : '一级管理员'},
						    {type_id : 2,type_name : '二级管理员'},
						    {type_id : 4,type_name : '三级管理员'},
						    {type_id : 8,type_name : '超级管理员'},
						    {type_id : 16,type_name : '设计人员'},
						    {type_id : 32,type_name : '模板操作员'},
						    {type_id : 64,type_name : '印刷对接员'},
						    {type_id : 128,type_name : '客服人员'},
						    {type_id : 256,type_name : '测试人员'},
						    {type_id : 512,type_name : '市场人员'},	
						    {type_id : 1024,type_name : '环信人员'}],
					valueField : 'type_id',
					textField : 'type_name',
					value:info.role_meta
				});
				$("#editTypeM").combobox({
					data : [ {type_id : 10,type_name : '后台管理员'}],
					valueField : 'type_id',
					textField : 'type_name',
					value:info.role_type
				});
		}
		});
		$("#editBtn").show();
		$('#editDlg').window({
			title : '角色编辑',
			iconCls : 'icon-edit',
			modal : true,
			shadow : true,
			collapsible : false,
			minimizable : false,
			maximizable : false
		});
	
		$('#editDlg').window('move', {
			top : 20,
			left : 20
		});
		$('#editDlg').window('open');
}

function cancelUpdTmpl() {
	$('#tmplDlg').window('close');
}

/**
 * 删除角色信息
 */
function delRoleInfo() {
	var roleId = $("#roleGrid").datagrid("getChecked");
	if (!roleId || roleId.length == 0) {
		$.messager.alert('提示信息', '请选择需要删除的内容！', 'warning');
		return;
	}
	$.messager.confirm("确认", "是否确认[删除]所选内容？", function(r) {
		if (r) {
			var ids = "";
			$.each(roleId, function(index, item) {
				ids = ids + item.role_id + ",";
			});
			console.log(ids);
			var url = appPath + "/itbRole/delRoleInfo.action?ids="+ ids;
			$.post(url, function(data) {
				if (data == "ok") {
					$.messager.alert('提示信息', '删除成功', 'info');
					doQuery();
				} else {
					$.messager.alert('提示信息', '删除失败', 'info');
				}
			});
		}
	});
}

/**
 * 获取请求信息(商品列表)
 */
function getQueryParam() {
	var queryObject = {};
	var findTypeL = $("#queryTypeL").combobox('getValue');
	var findTypeM = $("#queryTypeM").combobox('getValue');
	var desc = $("#queryItemDesc").val();
	if (findTypeL && Number(findTypeL || '0') >= 0)
		queryObject.findMeta = findTypeL;// 用户角色分类
	if (findTypeM && Number(findTypeM || '0') > 0)
		queryObject.findType = findTypeM;// 角色分类
	if (desc && desc.length > 0)
		queryObject.findDesc = desc;//角色描述
	return queryObject;
}

/**
 * 查询数据
 */
function doQuery(startFlg) {
	$("#roleGrid").datagrid('unselectAll');
	if (startFlg == 1) {
		$("#roleGrid").datagrid('load', getQueryParam());
	} else {
		$("#roleGrid").datagrid('reload', getQueryParam());
	}
}
